#include <stdio.h>
#include "sqlist.h"
/*
 * 创建线性表方法1
 * */
sqlist *sqlist_create()
{
	sqlist *me;
	me = malloc(sizeof(*me));
	if (me == NULL)
		return NULL;
	me->last = -1;/*最后一个元素的下标！！！！！*/

	return me;
}
/*
 * 创建线性表2
 * */
void sqlist_create1(sqlist **ptr)
{
	*ptr = malloc(sizeof(**ptr));	
	if (*ptr == NULL)
		return ;
	
	(*ptr)->last = -1;
	return ;
}
/*
 * 插入新元素  
 * i 新元素下标
 * data 新元素值
 * */
int sqlist_insert(sqlist *me,int i,datatype *data)
{
	if (me->last == DATASIZE - 1)/* 下标0-1023 */
	{
		return -1; /*当前空间容纳不下*/
	}
	if (i<0 || i> me->last + 1)
	{
		return -2; /*新元素插入下标不符合要求*/	
	}
	
	int end = me->last;
	int start = i;

	while(start<=end)
	{
		me->data[end + 1] = me->data[end];
		end --;
	}/*将me->data[start]弄为空*/	
	me->data[start] = *data;
	me->last ++;
	return 0;
}
/*
 * 删除下标对应的旧元素、
 * i 待删除的下标
 * */
int sqlist_deleta(sqlist *me,int i)
{
	if (i<0 || i> me->last)
	{
		return -2; /*旧元素下标不符合要求*/	
	}
	
	int end = me->last;
	int start = i;
	while(start<end)
	{
		me->data[end - 1] = me->data[end];
		end --;	
	}/*下标对应的旧元素被覆盖*/
	
	me->last--;
	return 0;		
}
/*
 * 某个值在链表中
 * 空链表 0
 * 找到了 1
 * 没有 0
 * */
int sqlist_find(sqlist *me,datatype *data)
{
	if(sqlist_isempty(me) == 1)
	{
		return 0;
	}

	int i;
	for(i=0;i<me->last;i++)
	{
		if(*data == me->data[i])
			return 1;
	}
	return 0;
}
/*
 * 线性表是空的？
 * */
int sqlist_isempty(sqlist *me)
{
	if(me->last == -1)
		return 1;

	return 0;	
}
/*
 * 设置线性表为空
 * */
int sqlist_setempty(sqlist *me)
{
	me->last = -1;
	return 0;
}
/* 
 * 得到线性表的last
 * */
int sqlist_getlast(sqlist *me)
{
	return me->last;
}
/*
 * 遍历线性表
 * */
void sqlist_display(sqlist *me)
{
	if ((sqlist_isempty(me)) == 1)
		return ;
	int i = 0;
	for(i=0;i<=me->last;i++)
		printf("%d ",me->data[i]);

	printf("\n");
	return ;
}
/*
 * 销毁线性表
 * */
int sqlist_destroy(sqlist *me)
{
	me->last = -1;
	free(me);
	return 0;
}

/*
 *线性表合并
 * */
int sqlist_union(sqlist *list1,sqlist *list2)
{
	int i;
	/**/
	for(i=0;i<=list2->last;i++)
	{

		if(sqlist_find(list1,&list2->data[i]) == 0)
		{
			sqlist_insert(list1,list1->last,&list2->data[i]);
		/*	sqlist_insert(list1,0,&list2->data[i]);*/
		}else
		{
		printf("%d\n",__LINE__);	
		}
	}	

	return 0;
}


